package com.sky.mapper;
import com.sky.entity.DishReview;
import com.sky.vo.DishReviewVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 菜品评价Mapper
 */
@Mapper
public interface DishReviewMapper {
    /**
     * 添加菜品评价
     * @param dishReview 菜品评价
     * @return 影响行数
     */
    int insert(DishReview dishReview);

    /**
     * 根据订单ID和用户ID查询评价列表
     * @param orderId 订单ID
     * @param userId 用户ID
     * @return 评价列表
     */
    List<DishReviewVO> selectByOrderIdAndUserId(@Param("orderId") Long orderId, @Param("userId") Long userId);

    /**
     * 根据菜品ID查询评价列表
     * @param dishId 菜品ID
     * @return 评价列表
     */
    List<DishReviewVO> selectByDishId(@Param("dishId") Long dishId);

    /**
     * 查询指定用户是否已对指定订单中的指定菜品进行过评价
     * @param orderId 订单ID
     * @param dishId 菜品ID
     * @param userId 用户ID
     * @return 评价数量
     */
    int countByOrderIdAndDishIdAndUserId(@Param("orderId") Long orderId,
                                         @Param("dishId") Long dishId,
                                         @Param("userId") Long userId);

    /**
     * 根据订单ID查询未评价的菜品列表
     * @param orderId 订单ID
     * @param userId 用户ID
     * @return 未评价的菜品列表
     */
    List<DishReviewVO> selectUnreviewedDishByOrderId(@Param("orderId") Long orderId, @Param("userId") Long userId);
}